此处主要用于归纳Scala中的一些常见,但不易理解的术语 以及阅读过程中的一些重要概念

  • first-class function 头等函数

  • trait 特质 类似 Java 的接口,但可以有方法实现及字段。能够让不同用途的类包装不同的特质,类似多重继承,但避免了多重继承中的”菱形继承“问题。 Java中一个类实现了某个接口,而Scala中则是混入(mix)了某种特质

  • companion object 伴生对象:当单例对象与类共享相同名称时,该对象为该类的伴生对象,可互相访问私有成员

  • mixin composition 混入组装

  • literal 字面量 : 即源代码中的一个固定值,直接写在代码中的常量值。如一个整数,一个用双引号括起的字符串等

  • 静态类型 静态类型指的是编译器在compile time执行类型检查,动态类型指的是编译器(虚拟机)在runtime执行类型检查。

  • type inference 类型推断:让Scala 自动理解忽略的类型

val msg = " Hello, world! "

val msg2 : String = " Hello, world! "

此处没有定义 msg 的类型,但可推断出是字符串

  • result type 结果类型:函数的返回类型

  • Unit : 类似 Java 的 void 类型,所有Java中返回void的方法,都会被映射为返回Unit的Scala方法。因此,执行Unit方法并不是为了得到返回值,而是为了其他的运行效果(side effect)。

  • parameterize 参数化对象,即在初始化对象时,利用参数为它赋值

    • 使用参数化实例,将参数设置在圆括号内: new java.math.BigInteger("12345")
    • 使用类型参数化实例,将参数设置在方括号内:new Array[String](3) 同时使用值和类型时,先写类型,再写参数
  • 工厂模式 : 减少用new创建对象的方式,用接口形式来返回对象,而把new创建方式封装起来。

  • uniform access principle 统一访问原则 :客户代码不应因为属性是通过字段,或者通过方法来实现而受到影响。

  • cons 操作符:::,用于把新元素组合到既有列表的最前端。此时由于方法名以冒号结尾,因此调用的是右操作符的方法,而非一般的左操作符。例如:

val twoThree = List(2, 3)
1 :: twoThree // equal to : twoThree.::(1)

// Intialize the list 
val oneTwoThree = 1 :: 2 :: 3 :: Nil //Nil is an empty list

//add two lists
val newList = oneTwoThree ::: twoThree
  • singleton 对象 : 单例对象。用于取代Java中的静态成员,以 object,而非class进行类定义。

    • companion object : 当一个单例对象与它的对应的类共享一个名称时,这个对象就被称为是companion object 伴生对象。伴生对象和它对应的类是各自独立声明的互不不同的代码段。但必须定义在同一个源文件中,访问彼此的私有成员。
    • standalone object : 不与伴生类共享名称的单例对象。

    单例对象可以对父类进行扩展,同时混入新的物质。但是singleton不带参数,因为它不是用new来实例化的,没有机会传递给它实例化参数。可以简单看成是该类的一个静态方法集合。

  • precondition 先决条件,可以利用 require方法设置

  • auxiliary constructor,用于在类中生成多个构造器

  • identifier 标识符

    • alphanumeric identifier 字母数字标识符: 以字母或下划线开始,后面可以跟字母、数字或下划线
    • operator identifier 操作符标识符
    • mixed identifier 混合式标识符:字母数据组成,后面跟着一个下划线和一个操作符标识符,例如:unary_+
    • literal identifier 字面量标识符,用`包括的任意字符串,例如:`x`
  • equantional reasoning 等效推论。 当一个表达式没有副作用时,引用这个表达式和引用这个表达式产生的结果,是等效的,可以随时替换

  • higher-order function 高阶函数,将函数值作为参数传入,形成带其他函数作为参数的函数。

  • currying 柯里化:被应用于多个参数列表,而不仅仅是一个。在调用柯里化的函数时, 实际执行的是一串函数,而非单个函数。

  • loan pattern 借贷模式:由抽象函数A打开资源并借给作为参数的函数B,因此,对于资源的管理全部交给作为控制结构的函数A来完成,而负责业务操作的函数B,则不需要担心资源本身的问题。

results matching ""

    No results matching ""